package ACWing.mathematicalknowledge.质数;
//868. 筛质数

import java.util.Scanner;

/**
 * @author :chenjie
 * @date :Created 2023/1/10 15:36
 */
public class SievePrime {
    static boolean[]st=new boolean[1000010];
    static int[]arr=new int[1000010];
    static int idx;
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        get_Prime(n);
        System.out.println(idx);
    }
//    埃及筛法
//    public static void get_Prime(int n){
//        for (int i = 2; i <= n; i++) {
//            if(!st[i]){
//                arr[idx++]=i;
//                for (int j = i+i; j <= n; j+=i) {//将倍数全部删除
//                    st[j]=true;
//                }
//            }
//        }
//    }
    //线性筛法
    public static void get_Prime(int n){
        for (int i = 2; i <= n; i++) {
            if(!st[i]){
                arr[idx++]=i;
            }
            for (int j = 0; arr[j] <= n/i; j++) {//将倍数全部删除
                st[arr[j]*i]=true;
                if(i%arr[j]==0){
                    break;
                }
            }

        }
    }
}
